home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 June / Macworld (1999-06).dmg / Shareware World / Info / For Developers / MacZoop2.0.sea / MacZoop2.0 / Required Classes / MacZoop.h < prev    next >
Text File  |  1999-02-11  |  8KB  |  219 lines

  1. /*************************************************************************************************
  2. *
  3. *
  4. *            MacZoop - "the framework for the rest of us"         
  5. *
  6. *
  7. *
  8. *            MacZoop.h            -- standard defines and globals, always present. You can
  9. *                                    precompile this if you want.
  10. *
  11. *
  12. *            © 1996, Graham Cox
  13. *
  14. *
  15. *
  16. *
  17. *************************************************************************************************/
  18.  
  19.  
  20. #pragma once
  21.  
  22. #ifndef __MACZOOP__
  23. #define    __MACZOOP__
  24.  
  25. #include    <QDOffscreen.h>
  26. #include    <CodeFragments.h>
  27. #include    <drag.h>
  28. #include    <AppleEvents.h>
  29. #include    <Quickdraw.h>
  30. #include    <Gestalt.h>
  31. #include    <sound.h>
  32.  
  33. #include    "ZDefines.h"
  34. #include    "ZErrors.h"
  35. #include    "ZApplication.h"
  36. #include    "ZWindowManager.h"
  37. #include    "ZClipboard.h"
  38. #include    "ZMenuBar.h"
  39. #include    "ZTimer.h"
  40. #include    "CursorUtilities.h"
  41. #include    "ZoopUtilities.h"
  42.  
  43. // backward compatibility:
  44. // MacZoop 1.8.2 and later require Universal Headers 3.0.1. However, older headers can be
  45. // used since we hereby conditionally include a compatibility file which defines some of the
  46. // newer constants
  47.  
  48. #ifndef __COMPATIBILITY__
  49. #if UNIVERSAL_INTERFACES_VERSION < 0x0301
  50. #include    "Compatibility.h"
  51. #endif
  52. #endif
  53.  
  54. //----------------------------------------------------------------------------------------------
  55.  
  56. // Streaming support:
  57.  
  58. // If you want streaming support in your application, turn ON the following. Streaming requires
  59. // the inclusion of numerous additional files to your project. For compatibility with earlier
  60. // versions, the default is currently OFF. This may change in future versions. Most standard
  61. // MacZoop classes now support streaming.
  62.  
  63. #define    _MACZOOP_STREAMS    0
  64.  
  65. #if _MACZOOP_STREAMS
  66. #include    "ZClassRegistry.h"
  67. #include    "ZStream.h"
  68. #endif
  69.  
  70. //----------------------------------------------------------------------------------------------
  71.  
  72. // Debugging:
  73.  
  74. // To assist debugging apps, you can turn on this flag. It affects the way that ASSERT is
  75. // compiled- either to nothing (production), or to a diagnostic exception (debug)
  76.  
  77. #define    _DEBUG_                0
  78.  
  79.  
  80. /************************************************************************************************/
  81.  
  82. // MacZoop reserves commands numbered 1-127 for the standard menu commands such as
  83. // New, Open, Quit, Cut, Paste, etc. Your own commands should be numbered 128 and higher. You
  84. // can use any command you wish for any purpose- MacZoop is ignorant of meanings attached to
  85. // command numbers themselves. Since the command mapping tables are built on the fly at start-up,
  86. // you are free to reorganise the menus however you want to suit your application- MacZoop will
  87. // handle any standard commands present in the default manner, but doesn't care if they're not
  88. // there, etc. This allows great flexibility in organising your application. Caveat: don't add
  89. // items to the Apple Menu unless you are prepared to override the standard command handling.
  90.  
  91.  
  92. // Standard commands:
  93.  
  94. enum
  95. {
  96.     kNoCmd = 0,                    // 0    - no command (send menuID and itemID instead)
  97.     kCmdAbout = 1,                // 1    - display the about box
  98.     kCmdNew,                    // 2    - make a new document or window
  99.     kCmdOpen,                    // 3    - display the open file dialog
  100.     kCmdClose,                    // 4    - close the active window
  101.     kCmdCloseAll,                // 5    - close all windows
  102.     kCmdSave,                    // 6    - save the active window to disk
  103.     kCmdSaveAs,                    // 7    - display the save dialog
  104.     kCmdRevert,                    // 8    - revert the active window to its previous saved version
  105.     kCmdPageSetup,                // 9    - display the page setup dialog
  106.     kCmdPrint,                    // 10    - display the print dialog and print the contents of the active window
  107.     kCmdQuit,                    // 11    - quit the application
  108.     kCmdUndo,                    // 12    - undo the last task
  109.     kCmdCut,                    // 13    - cut the selected item to the clipboard
  110.     kCmdCopy,                    // 14    - copy the selected item to the clipboard
  111.     kCmdPaste,                    // 15    - paste the clipboard contents
  112.     kCmdClear,                    // 16    - clear the selected item
  113.     kCmdSelectAll,                // 17    - select everything in the active window
  114.     kCmdSelectNone,                // 18    - select nothing in the active window
  115.     kCmdPlainText,                // 19    - set plain text
  116.     kCmdBoldText,                // 20    - set bold text
  117.     kCmdItalicText,                // 21    - set italic text
  118.     kCmdUnderlineText,            // 22    - set underlined text
  119.     kCmdOutlineText,            // 23    - set outlined text
  120.     kCmdShadowText,                // 24    - set shadowed text
  121.     kCmdCondensedText,            // 25    - set condensed text
  122.     kCmdExtendedText,            // 26    - set extended text
  123.     kCmdShowHideClipboard,        // 27    - show or hide the clipboard window
  124.     kCmdDoPreferences,            // 28    - open the prefs dialog, if any
  125.     kCmdSaveACopy,                // 29    - save a copy of the current file
  126.     kCmdPrintOneCopy,            // 30    - print a singlke copy of the current document
  127.     kCmdSetLeftJustify,            // 31    - set text left justified
  128.     kCmdSetCentreJustify,        // 32    - set text centre justified
  129.     kCmdSetRightJustify,        // 33    - set text right justified
  130.     kCmdSetFullJustify            // 34    - set full justify, where supported
  131. };
  132.  
  133. // std commands for font size menu:
  134.  
  135. enum
  136. {
  137.     kStdFontSizeBase = 100,        // 100    - can be subtracted from font size command to yield actual size
  138.     kCmdStdFontSizeOther,        // 101    - indicated "Other" font size- display font size dialog.
  139.     kCmdStdFontSize7 = 107,        // 107    - font size 7
  140.     kCmdStdFontSize9 = 109,        // 109    - font size 9
  141.     kCmdStdFontSize10,            // 110    - font size 10
  142.     kCmdStdFontSize12 = 112,    // 112    - font size 12
  143.     kCmdStdFontSize14 = 114,    // 114    - font size 14
  144.     kCmdStdFontSize18 = 118,    // 118    - font size 18
  145.     kCmdStdFontSize24 = 124,    // 124    - font size 24
  146.     kCmdStdFontSize36 = 136,    // 136    - font size 36
  147.     kCmdStdFontSize48 = 148,    // 148    - font size 48
  148.     kCmdStdFontSize60 = 160,    // 160    - font size 60
  149.     kCmdStdFontSize72 = 172        // 172    - font size 72
  150. };
  151.  
  152. // std commands for a putative "colour" menu:
  153.  
  154. enum
  155. {
  156.     kCmdSetColourBlack = 40,    // 40    - set colour to black
  157.     kCmdSetColourWhite,            // 41    - set colour to white
  158.     kCmdSetColourRed,            // 42    - red
  159.     kCmdSetColourGreen,            // 43    - green
  160.     kCmdSetColourBlue,            // 44    - blue
  161.     kCmdSetColourCyan,            // 45    - cyan
  162.     kCmdSetColourMagenta,        // 46    - magenta
  163.     kCmdSetColourYellow,        // 47    - yellow
  164.     kCmdSetColourOther            // 48    - display colour picker
  165. };
  166.  
  167. class    ZPrefsFile;
  168.  
  169. // Global objects accessible from all classes:
  170.  
  171. extern    ZApplication*        gApplication;        // the application object
  172. extern    ZWindowManager*        gWindowManager;        // the window manager object
  173. extern    ZMenuBar*            gMenuBar;            // the main menubar object
  174. extern    ZClipboard*            gClipboard;            // the clipboard object
  175. extern    ZPrefsFile*            gPrefsFile;            // the prefs file, if any
  176.  
  177. // Other globals
  178.  
  179. extern    OSType                gAppSignature;        // creator type of this application    
  180. extern    Boolean                gIsAColourMac;        // TRUE if we have any form of colour QD
  181. extern    tMacInfo            gMacInfo;            // other common gestalt results    
  182.  
  183. extern    RgnHandle            gUtilRgn;            // handy temporary region for general use
  184.  
  185. extern    RGBColor            gWhite;                // white RGB colour
  186. extern    RGBColor            gBlack;                // black RGB colour
  187. extern    RGBColor            gLightGray;            // light gray
  188. extern    RGBColor            gMidGray;            // medium gray
  189. extern    RGBColor            gDarkGray;            // dark gray
  190. extern    RGBColor            gRed;                // solid red
  191. extern    RGBColor            gGreen;                // solid green
  192. extern    RGBColor            gBlue;                // solid blue
  193. extern    RGBColor            gCyan;                // solid cyan
  194. extern    RGBColor            gMagenta;            // solid magenta
  195. extern    RGBColor            gYellow;            // solid yellow
  196.  
  197. // static code called to kick the whole thing into life:
  198.  
  199. void    RunApplication();
  200.  
  201. // ASSERT macros- handy for debugging. For "final" code, ASSERT maps to nothing so no overhead
  202. // incurred within code by the checks made.
  203. // <r> is a reason string, (C string), which is usually written as a literal- since it's only
  204. // for debugging, there is no need to use resources or pascal formatted strings.
  205. // <x> is an expression that evaluates to a Boolean. If FALSE, the assertion fails with a call
  206. // to AssertErr. If TRUE, execution continues.
  207. // The line number and file name are reported automatically, you can provide more info as you wish
  208. // in your reason message.
  209.  
  210. #if _DEBUG_
  211.  
  212. #define    ASSERT( r, x, v )        if ( !( x )) { AssertErr( __LINE__, __FILE__, r, v ); };
  213.  
  214. #else
  215. #define    ASSERT( r, x, v )
  216. #endif
  217.  
  218.  
  219. #endif